OpenCV 图像拼接和图像融合技术 您所在的位置:网站首页 opencv GPU加速对图像拼接的影响 OpenCV 图像拼接和图像融合技术

OpenCV 图像拼接和图像融合技术

2023-10-20 00:21| 来源: 网络整理| 查看: 265

图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要。

再举一个身边的例子吧,你用你的手机对某一场景拍照,但是你没有办法一次将所有你要拍的景物全部拍下来,所以你对该场景从左往右依次拍了好几张图,来把你要拍的所有景物记录下来。那么我们能不能把这些图像拼接成一个大图呢?我们利用opencv就可以做到图像拼接的效果!

比如我们有对这两张图进行拼接。

从上面两张图可以看出,这两张图有比较多的重叠部分,这也是拼接的基本要求。

那么要实现图像拼接需要那几步呢?简单来说有以下几步:

对每幅图进行特征点提取 对对特征点进行匹配 进行图像配准 把图像拷贝到另一幅图像的特定位置 对重叠边界进行特殊处理

好吧,那就开始正式实现图像配准。

第一步就是特征点提取。现在CV领域有很多特征点的定义,比如sift、surf、harris角点、ORB都是很有名的特征因子,都可以用来做图像拼接的工作,他们各有优势。本文将使用ORB和SURF进行图像拼接,用其他方法进行拼接也是类似的。

基于SURF的图像拼接

用SIFT算法来实现图像拼接是很常用的方法,但是因为SIFT计算量很大,所以在速度要求很高的场合下不再适用。所以,它的改进方法SURF因为在速度方面有了明显的提高(速度是SIFT的3倍),所以在图像拼接领域还是大有作为。虽说SURF精确度和稳定性不及SIFT,但是其综合能力还是优越一些。下面将详细介绍拼接的主要步骤。

1.特征点提取和匹配 1 //提取特征点 2 SurfFeatureDetector Detector(2000); 3 vector keyPoint1, keyPoint2; 4 Detector.detect(image1, keyPoint1); 5 Detector.detect(image2, keyPoint2); 6 7 //特征点描述,为下边的特征点匹配做准备 8 SurfDescriptorExtractor Descriptor; 9 Mat imageDesc1, imageDesc2; 10 Descriptor.compute(image1, keyPoint1, imageDesc1); 11 Descriptor.compute(image2, keyPoint2, imageDesc2); 12 13 FlannBasedMatcher matcher; 14 vector matchePoints; 15 vector GoodMatchePoints; 16 17 vector train_desc(1, imageDesc1); 18 matcher.add(train_desc); 19 matcher.train(); 20 21 matcher.knnMatch(imageDesc2, matchePoints, 2); 22 cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有